package cn.wolfcode.wolf.redis.key;

import java.util.concurrent.TimeUnit;

/**
 * RedisKey通用规范设计
 */
public interface KeyPrefix {
    /**
     * @return RedisKey前缀
     */
    String getPrefix();
    /**
     * @return 超时时间,-1表示没有超时
     */
    default Long getTimeout(){
        return -1L;
    }

    /**
     *
     * @return 如果有超时时间，则必须有单位，没有则不设置
     */
    default TimeUnit getUnit(){
        return null;
    }
    default String fullKey(String... suffix){
        StringBuilder sb = new StringBuilder(100);
        sb.append(getPrefix());
        for (String s : suffix){
            sb.append(":").append(s);
        }
        return sb.toString();
    }
}
